<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>

<body>
    <div>123</div>

    <script>
        // let el = document.querySelector("div");
        // const m = new Map([
        //     [el, el]
        // ]);
        // console.log(m)

        // let o = {}
        // o[el] = el
        // console.log(o)
        // let p = ["p"];
        // const m = new Map([
        //     [p, 'hehe']
        // ])
        // console.log(m.get(p))

        // m.set(p, 111);
        // m.set("a", 222)
        // console.log(m)

        // for (let key of m.entries()) {
        //     console.log(key)
        // }

        let str = "1234";
        console.log([...str])
    </script>
    <script>
        // function f(v, w, x, y, z) {
        //     console.log(v, w, x, y, z)
        // }
        // const args = [0, 1];
        // f(-1, ...args, 2, ...[3]);

        // call,apply,bind  转换
        //ES5  this 谁调用我我指向谁
        // let name = "haha";
        // let obj = {
        //         name: "xixi",
        //         fn() {
        //             console.log(this)
        //         },
        //         // run: () => {
        //         //     console.log(this) //谁定义我，我指向谁
        //         // }
        //     }
        //     // obj.run()
        //     // let x = obj.run;
        //     // x()


        // obj.fn()

        // let x = obj.fn;
        // x();
        // let arr1 = [0, 1, 2];
        // let arr2 = [3, 4, 5];
        // // arr1.push(arr2);
        // // console.log(arr1)
        // arr1.push(...arr2);
        // console.log(arr1)


        //数组：
        //改变原数组： push长度 pop被删除的元素 shift unshift reverse  splice sort 
        //不改变原数组：join concat  slice  indexOf lastIndexOf  
        //ES5 : map映射 forEach遍历 filter筛选 some every  reduce 减少reduceRight

        //ES5 伪数组转真数组：
        //Array.prototype.slice.call(arr)
        //[].slice.call()

        // console.log(Array.of("hello", true, 10, null, undefined))
        // let arr = [1, 2, 3, 4, 5];
        // // console.log(arr.values())
        // for (let index of arr.values()) {
        //     console.log(index);
        // }

        // let s = Symbol();
        // let s2 = Symbol();
        // let obj = {
        //     [s2]: "hello",
        //     [s]: function(x) {
        //         console.log(x)
        //     },
        //     name: "xixi"
        // }

        // obj[s](1)
        // console.log(Object.getOwnPropertySymbols(obj))
        // console.log(Reflect.ownKeys(obj))

        // let fn = "world";
        // let fn = "world";
        // let obj = {
        //     fn
        // }
        // console.log(obj.fn)
        // console.log(obj['fn'])
        // console.log(obj[fn])
        // let fn = "hello"
        // let obj = {
        //     [fn]: fn
        // };
        // console.log(obj)

        // let obj = {
        //     name: "xixi",
        //     age: 20
        // }
        // let obj2 = {
        //     fn: "world",
        //     name: "shijie"
        // }

        // Object.defineProperty(obj, 'name', {
        //     value: "hello",
        //     writable: false,
        //     enumerable: false,
        //     configurable: false
        // })


        // Object.assign(obj2, obj);
        // console.log(obj2)

        // let s1 = Symbol();

        // let obj = {
        //     [s1]: "hello",
        //     name: "xixi"
        // }

        // console.log(Object.getOwnPropertyNames(obj))
        // console.log(Object.getOwnPropertySymbols(obj))
        // console.log(Reflect.ownKeys(obj))
        // console.log(Object.keys(obj))

        // for (let key in obj) {
        //     console.log(key)
        // }


        // var person = function() {
        //     var _name = ' ';
        //     var obj = {};
        //     Object.defineProperty(obj, 'name', {
        //         configurable: true,
        //         enumerable: true,
        //         get: function() {
        //             return _name;
        //         },
        //         set: function(n) {
        //             _name = n;
        //         }
        //     })
        //     return obj;
        // }();
        // person.name = "Zhangsan";
        // person.name // 输出 --> Zhangsan

        // let obj = {
        //     name: "xixi",
        //     get a() {
        //         return this.name
        //     },
        //     set b(x) {
        //         this.name = x
        //     }

        // }
        // obj.b = "hello";
        // console.log(obj.name)
    </script>
</body>

</html>